<link rel="stylesheet" href="/static/admin/js/webuploader/webuploader.css" type="text/css">

    <input type="hidden" name="{{name}}" value="{{val}}"  id="cover_id_{{name}}"  />
    <div id="fileList_{{name}}" class="uploader-list"></div>
    <div id="filePicker_{{name}}">{{'选择图片' if val==0 else '修改图片'}}</div>

<script src="/static/admin/js/webuploader/webuploader.js" type="text/javascript"></script>
<script type="text/javascript">
    $list_{{name}} = $('#fileList_{{name}}'),
        // 优化retina, 在retina下这个值是2
        ratio_{{name}} = window.devicePixelRatio || 1,

        // 缩略图大小
        thumbnailWidth_{{name}} = 100 * ratio_{{name}},
    thumbnailHeight_{{name}} = 100 * ratio_{{name}},

    // Web Uploader实例
    uploader_{{name}};

    // 初始化Web Uploader
    // 初始化Web Uploader
    var uploader_{{name}} = WebUploader.create({
        // 选完文件后，是否自动上传。
        auto: true,
        // swf文件路径
        swf: '/static/admin/js/webuploader/Uploader.swf',
        // 文件接收服务端。
        server: '/ext/attachment/adminfile/uploadpic',
        // 选择文件的按钮。可选。
        // 内部根据当前运行是创建，可能是input元素，也可能是flash.
        pick: {
            id:'#filePicker_{{name}}',
            multiple: false
        },
        // 只允许选择图片文件。
        accept: {
            title: 'Images',
            extensions: 'gif,jpg,jpeg,bmp,png',
            mimeTypes: 'image/jpg,image/jpeg,image/png,image/gif,image/bmp'
        }
    });
    //当有图片时加载图片
    var cover_id="{{val}}";
    if(cover_id != 0){
        var picurl = "{{val|get_pic('m=1,w=110,h=110')}}"
        var $li = $(
            '<div id="' + cover_id + '" class="file-item thumbnail thumb-lg">' +
            '<img src="'+picurl+'">' +
            '</div>'
            ),
            $img = $li.find('img');

        $list_{{name}}.html( $li );
    }
    // 当有文件添加进来的时候
    uploader_{{name}}.on( 'fileQueued', function( file ) {
        var $li = $(
            '<div id="' + file.id + '" class="file-item thumbnail">' +
            '<img>' +
            '<div class="info">' + file.name + '</div>' +
            '</div>'
            ),
            $img = $li.find('img');

        $list_{{name}}.html( $li );

        // 创建缩略图
        uploader_{{name}}.makeThumb( file, function( error, src ) {
            if ( error ) {
                $img.replaceWith('<span>不能预览</span>');
                return;
            }

            $img.attr( 'src', src );
        }, thumbnailWidth_{{name}}, thumbnailHeight_{{name}} );
    });

    // 文件上传过程中创建进度条实时显示。
    uploader_{{name}}.on( 'uploadProgress', function( file, percentage ) {

        var $li = $( '#'+file.id ),
            $percent = $li.find('.progress span');

        // 避免重复创建
        if ( !$percent.length ) {
            $percent = $('<p class="progress"><span></span></p>')
                .appendTo( $li )
                .find('span');
        }

        $percent.css( 'width', percentage * 100 + '%' );
    });

    // 文件上传成功，给item添加成功class, 用样式标记上传成功。
    uploader_{{name}}.on( 'uploadSuccess', function( file,res ) {
        $( '#'+file.id ).addClass('upload-state-done');
        $("#cover_id_{{name}}").val(res);
    });

    // 文件上传失败，现实上传出错。
    uploader_{{name}}.on( 'uploadError', function( file ) {
        var $li = $( '#'+file.id ),
            $error = $li.find('div.error');

        // 避免重复创建
        if ( !$error.length ) {
            $error = $('<div class="error"></div>').appendTo( $li );
        }

        $error.text('上传失败');
    });

    // 完成上传完了，成功或者失败，先删除进度条。
    uploader_{{name}}.on( 'uploadComplete', function( file ) {
        $( '#'+file.id ).find('.progress').remove();
    });
</script>